I have a Dockerfile that is supposed to build an Ubuntu image. But whenever I run
docker build -t ubuntu-test:latest ./Dockerfile
it shows the following error on the console
unable to prepare context: context must be a directory: /Users/tempUser/git/docker/Dockerfile
I'm on Mac OsX. I tried to sudo as well. Nothing works.
You need to point to the directory instead. You must not specify the dockerfile.
docker build -t ubuntu-test:latest . does work.
docker build -t ubuntu-test:latest ./Dockerfile does not work.
You can also run docker build with -f option
docker build -t ubuntu-test:latest -f Dockerfile.custom .
docker build commandThe basic syntax of docker's build command is
docker build -t imagename:imagetag context_dir
The context is a directory and determines what the docker build process is going to see: From the Dockerfile's point of view, any file context_dir/mydir/myfile in your filesystem will become /mydir/myfile in the Dockerfile and hence during the build process.
If the dockerfile is called Dockerfile and lives in the context, it will be found implicitly by naming convention.
That's nice, because it means you can usually find the Dockerfile in any docker container immediately.
If you insist on using different name, say "/tmp/mydockerfile", you can use -f like this:
docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir
but then the dockerfile will not be in the same folder or at least will be harder to find.